﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Sigos
{
    public partial class frmContasPagar : Form
    {
        public frmContasPagar()
        {
            InitializeComponent();
        }


        Utilidades util = new Utilidades();

        private bool SalvarRegistro()
        {
            try
            {
                if (tbCodigoItem.Text == string.Empty)
                {
                    using (SigosEntities Entidades = new SigosEntities())
                    {
                        Contas_a_Pagar nContasPagar = new Contas_a_Pagar();

                        nContasPagar.Fornecedor = Convert.ToInt32(tbCodigoFornecedor.Text);
                        nContasPagar.Documento = tbNumeroDocumento.Text;
                        nContasPagar.Emissao = Convert.ToDateTime(dtPEmissao.Text);
                        nContasPagar.Vencimento = Convert.ToDateTime(dtPVencimento.Text);
                        nContasPagar.Valor = Convert.ToDecimal(tbValor.Text);
                        nContasPagar.Juro = tbJuros.Text;
                        nContasPagar.Obs = tbObservacoes.Text;
                        nContasPagar.Paga = false;

                        Entidades.AddToContas_a_Pagar(nContasPagar);
                        Entidades.SaveChanges();
                        return true;
                    }
                }
                else
                {
                    using(SigosEntities Entidades = new SigosEntities())
                    {

                    int Codigo = Convert.ToInt32(tbCodigoItem.Text);
                    var nContasPagar = (from cp in Entidades.Contas_a_Pagar
                                            where cp.CodigoContaP == Codigo
                                            select cp).FirstOrDefault();

                    nContasPagar.Fornecedor = Convert.ToInt32(tbCodigoFornecedor.Text);
                    nContasPagar.Documento = tbNumeroDocumento.Text;
                    nContasPagar.Emissao = Convert.ToDateTime(dtPEmissao.Text);
                    nContasPagar.Vencimento = Convert.ToDateTime(dtPVencimento.Text);
                    nContasPagar.Valor = Convert.ToDecimal(tbValor.Text);
                    nContasPagar.Juro = tbJuros.Text;
                    nContasPagar.Obs = tbObservacoes.Text;


                    Entidades.ObjectStateManager.ChangeObjectState("nContasPagar",EntityState.Modified);
                    Entidades.SaveChanges();

                    return true;
                    }
                }
                
            }
            catch
            {
                return false;
            }
        }

        private bool ExcluirConta()
        {
            try
            {
                using (SigosEntities Entidades = new SigosEntities())
                {
                    int Codigo = Convert.ToInt32(tbCodigoItem.Text);

                    var RegistroE = (from ex in Entidades.Contas_a_Pagar
                                     where ex.CodigoContaP == Codigo
                                     select ex).FirstOrDefault();

                    Entidades.DeleteObject(RegistroE);
                    Entidades.SaveChanges();

                    return true;
                }
            }
            catch
            {
                return false;
            }
        }

        private void CarregaRegistro(int Codigoi)
        {
            try
            {
                using (SigosEntities Entidades = new SigosEntities())
                {

                    var Carrega = Entidades.Clientes.Where(reg => reg.Codigo == Codigoi).FirstOrDefault();
                    tbFornecedor.Text = Carrega.NomeFantasia + " - " + Carrega.RazaoSocial;
                }
            }
            catch
            {

            }
        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            util.LimpaCampos(Controls);
        }

        private void btBuscaFornecedor_Click(object sender, EventArgs e)
        {
            using (frmPesquisaCliente PesqCliente = new frmPesquisaCliente())
            {
                PesqCliente.ShowDialog();
                tbCodigoFornecedor.Text = Utilidades.NumeroPedido;
                int CodigoF = Convert.ToInt32(Utilidades.NumeroPedido);
                CarregaRegistro(CodigoF);
                Utilidades.NumeroPedido = null;
                tbNumeroDocumento.Focus();
                //btnInserirProdutos.Focus();
            }
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            if (SalvarRegistro() == true)
            {
                util.Informacao("Registro salvo com sucesso");
            }
            else
            {
                util.Erro("Erro ao salvar o registro!");
            }
        }

        private void btnSair_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            if (ExcluirConta() == true)
            {
                util.Informacao("Registro excluido com sucesso");
            }
            else 
            {
                util.Erro("Erro ao excluir o registro");
            }
        }
    }
}
